/*
 * TDS PEC 4 
 * Grupo 3H2M
 *
 * El paquete <code>edu.uoc.tds.pec4.beans</code> contiene la implementación de
 * los Data Transfer Object, que representan los mapeos de objetos contra las tablas
 * de la base de datos.<br />Esto permite que las diferentes capas de la aplicación puedan
 * comunicarse enviando objetos DTO que encapsulen la información.<br />
 *
 * Todos los DTO implementan la interfaz <code>java.io.Serializable</code>
 */
package edu.uoc.tds.pec4.beans;

/**
 * La clase <code>LocalizacionDTO</code> representa el objeto DTO relativo a
 * la suma de ciudad, provincia y pais.<br />
 *
 * @author	Luis Rodríguez-Manzaneque Sánchez
 * @version	28/11/2011
 */
public class LocalizacionDTO extends DTO {
    
    private CiudadDTO ciudad;
    private ProvinciaDTO provincia;
    private PaisDTO pais;
    
    /**
     * Constructor de una Localizacion
     */
    public LocalizacionDTO() {
        super();
    }

    public LocalizacionDTO(CiudadDTO ciudad, ProvinciaDTO provincia, PaisDTO pais) {
        this.ciudad = ciudad;
        this.provincia = provincia;
        this.pais = pais;
    }

    public CiudadDTO getCiudad() {
        return ciudad;
    }

    public void setCiudad(CiudadDTO ciudad) {
        this.ciudad = ciudad;
    }

    public PaisDTO getPais() {
        return pais;
    }

    public void setPais(PaisDTO pais) {
        this.pais = pais;
    }

    public ProvinciaDTO getProvincia() {
        return provincia;
    }

    public void setProvincia(ProvinciaDTO provincia) {
        this.provincia = provincia;
    }
    
    
     /**
     * Indicates whether some other object is "equal to" this one.
     * @param	obj the reference object with which to compare.
     * @return	Returns true if this object is the same as the obj argument;
     *          false otherwise.
     */
    @Override
    public boolean equals(Object obj) {
        boolean igual = false;
        if (obj != null) {
            if (obj instanceof LocalizacionDTO) {
                igual = this.getCiudad().equals(((LocalizacionDTO) obj).getCiudad());
                if (igual) {
                    igual = this.getProvincia().equals(((LocalizacionDTO) obj).getProvincia());
                    if (igual) {
                        igual = this.getPais().equals(((LocalizacionDTO) obj).getPais());
                    }
                }
            }
        }
        return igual;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 47 * hash + (this.getCiudad() != null ? this.getCiudad().getIdCiudad().hashCode() : 0);
        return hash;
    }

    @Override
    public String toString() {
        return pais.getNomPais() + ", " + provincia.getNomProvincia() + ", " + ciudad.getNomCiudad();
    }
}
